import pandas as pd
import numpy as np
import re
import missingno as msno
import os
import glob
import platform
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
path = "c:/Windows/Fonts/malgun.ttf"
from matplotlib import font_manager, rc
if platform.system() == 'Darwin':
rc('font', family='AppleGothic')
elif platform.system() == 'Windows':
font_name = font_manager.FontProperties(fname=path).get_name()
rc('font', family=font_name)
else:
print('Unknown system... sorry~~~~')
plt.rcParams['axes.unicode_minus'] = False
from IPython.display import set_matplotlib_formats
set_matplotlib_formats('retina')
https://www.seoul.go.kr/coronaV/coronaStatus.do
# 웹페이지의 '테이블' 형식 데이터는 판다스만으로 크롤링
url = 'https://www.seoul.go.kr/coronaV/coronaStatus.do'
url
'https://www.seoul.go.kr/coronaV/coronaStatus.do'
# 페이지에 있는 전체 테이블 (크롤링은 실시간 집계되므로 데이터가 다름)
pd.read_html(url)
[ 강남구 강동구 강북구 강서구 관악구 광진구 구로구 금천구 노원구 도봉구 동대문구 동작구 \ 0 7296 4183 2923 4758 5703 3730 4774 2328 4198 2833 3967 4387 1 +28 +31 +21 +23 +24 +24 +64 +23 +24 +12 +29 +23 2 서대문구 서초구 성동구 성북구 송파구 양천구 영등포구 용산구 은평구 종로구 중구 중랑구 3 2911 4463 3026 4087 6815 3537 4817 2906 4616 1842 1899 4027 4 +12 +7 +7 +22 +35 +9 +20 +28 +31 +11 +7 +21 마포구 0 4012 1 +18 2 기타 3 7586 4 +29 , 강남구 강동구 강북구 강서구 관악구 광진구 0 7296 4183 2923 4758 5703 3730 1 +28 +31 +21 +23 +24 +24 2 구로구 금천구 노원구 도봉구 동대문구 동작구 3 4774 2328 4198 2833 3967 4387 4 +64 +23 +24 +12 +29 +23 5 마포구 서대문구 서초구 성동구 성북구 송파구 6 4012 2911 4463 3026 4087 6815 7 +18 +12 +7 +7 +22 +35 8 양천구 영등포구 용산구 은평구 종로구 중구 9 3537 4817 2906 4616 1842 1899 10 +9 +20 +28 +31 +11 +7 11 중랑구 기타 NaN NaN NaN NaN 12 4027 7586 NaN NaN NaN NaN 13 +21 +29 NaN NaN NaN NaN, 구 분 합 계 9세 이하 10세~19세 20세~29세 30세~39세 40세~49세 50세~59세 60세~69세 \ 0 확진자(명) 583 37.0 60.0 115.0 102.0 81.0 64.0 72.0 1 비율(%) 100 6.4 10.3 19.7 17.5 13.9 10.9 12.4 70세 이상 0 52.0 1 8.9 , 일자 10.9. 10.8. 10.7. 10.6. 10.5. 10.4. 10.3. 0 검사자(명) 50888.0 76612.0 77003.0 75738.0 79500.0 61079.0 42024.0 1 확진자(명) 583.0 712.0 775.0 836.0 689.0 521.0 574.0 2 확진율(%) 0.8 0.9 1.0 1.1 1.1 1.2 1.0, 소계 해외 유입 노원구 소재 병원 관련('21.10.) 송파구 소재 시장 관련('21.9.) \ 0 107624 1783 33 732 강서구 소재 시장 관련(‘21.10.) 마포구 소재 시장 관련 기타 집단 감염 기타 확진자 접촉 타시도 확진자 접촉 \ 0 26 89 23598 41332 4341 감염 경로 조사중 0 35690 , Empty DataFrame Columns: [연번, 환자, 확진일, 거주지, 여행력, 접촉력, 퇴원현황] Index: [], Empty DataFrame Columns: [연번, 환자, 확진일, 거주지, 여행력, 접촉력, 퇴원현황] Index: [], 일 월 화 \ 0 NaN NaN NaN 1 3 102,934 (+735) 4 103,508 (+574) 5 104,029 (+521) 2 10 107,624 (+583) 11 12 3 17 18 19 4 24 25 26 5 31 NaN NaN 수 목 금 \ 0 NaN NaN 1 101,407 (+915) 1 6 104,718 (+689) 7 105,554 (+836) 8 106,329 (+775) 2 13 14 15 3 20 21 22 4 27 28 29 5 NaN NaN NaN 토 0 2 102,199 (+792) 1 9 107,041 (+712) 2 16 3 23 4 30 5 NaN ]
# 한페이지 내의 전체 테이블 갯수
table = pd.read_html(url)
len(table)
8
# "구별 발생 환자수" 만 필요하므로 첫번째 테이블을 사용한다
# table[1] 부터 table[7]까지 실행하여 나머지 테이블을 확인해보자 (나이대, 감염경로, 여행력, 퇴원현황 등)
table[0]
강남구 | 강동구 | 강북구 | 강서구 | 관악구 | 광진구 | 구로구 | 금천구 | 노원구 | 도봉구 | 동대문구 | 동작구 | 마포구 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 7296 | 4183 | 2923 | 4758 | 5703 | 3730 | 4774 | 2328 | 4198 | 2833 | 3967 | 4387 | 4012 |
1 | +28 | +31 | +21 | +23 | +24 | +24 | +64 | +23 | +24 | +12 | +29 | +23 | +18 |
2 | 서대문구 | 서초구 | 성동구 | 성북구 | 송파구 | 양천구 | 영등포구 | 용산구 | 은평구 | 종로구 | 중구 | 중랑구 | 기타 |
3 | 2911 | 4463 | 3026 | 4087 | 6815 | 3537 | 4817 | 2906 | 4616 | 1842 | 1899 | 4027 | 7586 |
4 | +12 | +7 | +7 | +22 | +35 | +9 | +20 | +28 | +31 | +11 | +7 | +21 | +29 |
df_raw = table[0].T.reset_index()
df_raw
index | 0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|---|
0 | 강남구 | 7296 | +28 | 서대문구 | 2911 | +12 |
1 | 강동구 | 4183 | +31 | 서초구 | 4463 | +7 |
2 | 강북구 | 2923 | +21 | 성동구 | 3026 | +7 |
3 | 강서구 | 4758 | +23 | 성북구 | 4087 | +22 |
4 | 관악구 | 5703 | +24 | 송파구 | 6815 | +35 |
5 | 광진구 | 3730 | +24 | 양천구 | 3537 | +9 |
6 | 구로구 | 4774 | +64 | 영등포구 | 4817 | +20 |
7 | 금천구 | 2328 | +23 | 용산구 | 2906 | +28 |
8 | 노원구 | 4198 | +24 | 은평구 | 4616 | +31 |
9 | 도봉구 | 2833 | +12 | 종로구 | 1842 | +11 |
10 | 동대문구 | 3967 | +29 | 중구 | 1899 | +7 |
11 | 동작구 | 4387 | +23 | 중랑구 | 4027 | +21 |
12 | 마포구 | 4012 | +18 | 기타 | 7586 | +29 |
df_1 = df_raw[['index', 0]]
df_1.columns = ['시군구명', '확진자수']
df_1
시군구명 | 확진자수 | |
---|---|---|
0 | 강남구 | 7296 |
1 | 강동구 | 4183 |
2 | 강북구 | 2923 |
3 | 강서구 | 4758 |
4 | 관악구 | 5703 |
5 | 광진구 | 3730 |
6 | 구로구 | 4774 |
7 | 금천구 | 2328 |
8 | 노원구 | 4198 |
9 | 도봉구 | 2833 |
10 | 동대문구 | 3967 |
11 | 동작구 | 4387 |
12 | 마포구 | 4012 |
df_2 = df_raw[[2, 3]]
df_2.columns = ['시군구명', '확진자수']
df_2
시군구명 | 확진자수 | |
---|---|---|
0 | 서대문구 | 2911 |
1 | 서초구 | 4463 |
2 | 성동구 | 3026 |
3 | 성북구 | 4087 |
4 | 송파구 | 6815 |
5 | 양천구 | 3537 |
6 | 영등포구 | 4817 |
7 | 용산구 | 2906 |
8 | 은평구 | 4616 |
9 | 종로구 | 1842 |
10 | 중구 | 1899 |
11 | 중랑구 | 4027 |
12 | 기타 | 7586 |
df_corona = pd.concat([df_1, df_2], axis=0, ignore_index=True)
df_corona
시군구명 | 확진자수 | |
---|---|---|
0 | 강남구 | 7296 |
1 | 강동구 | 4183 |
2 | 강북구 | 2923 |
3 | 강서구 | 4758 |
4 | 관악구 | 5703 |
5 | 광진구 | 3730 |
6 | 구로구 | 4774 |
7 | 금천구 | 2328 |
8 | 노원구 | 4198 |
9 | 도봉구 | 2833 |
10 | 동대문구 | 3967 |
11 | 동작구 | 4387 |
12 | 마포구 | 4012 |
13 | 서대문구 | 2911 |
14 | 서초구 | 4463 |
15 | 성동구 | 3026 |
16 | 성북구 | 4087 |
17 | 송파구 | 6815 |
18 | 양천구 | 3537 |
19 | 영등포구 | 4817 |
20 | 용산구 | 2906 |
21 | 은평구 | 4616 |
22 | 종로구 | 1842 |
23 | 중구 | 1899 |
24 | 중랑구 | 4027 |
25 | 기타 | 7586 |
# index 위치 이용해 사용하지 않을 '기타' 행 제거
df_corona = df_corona.drop(df_corona.index[25])
df_corona
시군구명 | 확진자수 | |
---|---|---|
0 | 강남구 | 7296 |
1 | 강동구 | 4183 |
2 | 강북구 | 2923 |
3 | 강서구 | 4758 |
4 | 관악구 | 5703 |
5 | 광진구 | 3730 |
6 | 구로구 | 4774 |
7 | 금천구 | 2328 |
8 | 노원구 | 4198 |
9 | 도봉구 | 2833 |
10 | 동대문구 | 3967 |
11 | 동작구 | 4387 |
12 | 마포구 | 4012 |
13 | 서대문구 | 2911 |
14 | 서초구 | 4463 |
15 | 성동구 | 3026 |
16 | 성북구 | 4087 |
17 | 송파구 | 6815 |
18 | 양천구 | 3537 |
19 | 영등포구 | 4817 |
20 | 용산구 | 2906 |
21 | 은평구 | 4616 |
22 | 종로구 | 1842 |
23 | 중구 | 1899 |
24 | 중랑구 | 4027 |
df_corona_seoul = pd.DataFrame(df_corona.groupby('시군구명')['확진자수'].sum())
df_corona_seoul
확진자수 | |
---|---|
시군구명 | |
강남구 | 7296 |
강동구 | 4183 |
강북구 | 2923 |
강서구 | 4758 |
관악구 | 5703 |
광진구 | 3730 |
구로구 | 4774 |
금천구 | 2328 |
노원구 | 4198 |
도봉구 | 2833 |
동대문구 | 3967 |
동작구 | 4387 |
마포구 | 4012 |
서대문구 | 2911 |
서초구 | 4463 |
성동구 | 3026 |
성북구 | 4087 |
송파구 | 6815 |
양천구 | 3537 |
영등포구 | 4817 |
용산구 | 2906 |
은평구 | 4616 |
종로구 | 1842 |
중구 | 1899 |
중랑구 | 4027 |
df_corona_seoul.info()
<class 'pandas.core.frame.DataFrame'> Index: 25 entries, 강남구 to 중랑구 Data columns (total 1 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 확진자수 25 non-null object dtypes: object(1) memory usage: 400.0+ bytes
df_corona_seoul['확진자수'] = pd.to_numeric(df_corona_seoul['확진자수'])
df_corona_seoul.info()
<class 'pandas.core.frame.DataFrame'> Index: 25 entries, 강남구 to 중랑구 Data columns (total 1 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 확진자수 25 non-null int64 dtypes: int64(1) memory usage: 400.0+ bytes
df_corona_seoul.sort_values(by='확진자수')
확진자수 | |
---|---|
시군구명 | |
종로구 | 1842 |
중구 | 1899 |
금천구 | 2328 |
도봉구 | 2833 |
용산구 | 2906 |
서대문구 | 2911 |
강북구 | 2923 |
성동구 | 3026 |
양천구 | 3537 |
광진구 | 3730 |
동대문구 | 3967 |
마포구 | 4012 |
중랑구 | 4027 |
성북구 | 4087 |
강동구 | 4183 |
노원구 | 4198 |
동작구 | 4387 |
서초구 | 4463 |
은평구 | 4616 |
강서구 | 4758 |
구로구 | 4774 |
영등포구 | 4817 |
관악구 | 5703 |
송파구 | 6815 |
강남구 | 7296 |
# df_corona_seoul.groupby('시군구명')['확진자수'].sum().sort_values().plot(kind='barh', color='palevioletred', figsize=(12,8))
# plt.title('서울시 구별 코로나 확진자수 총계')
## 좀더 간단한 아래 코드를 사용한다
df_corona_seoul.sort_values(by='확진자수').plot.barh(color='palevioletred', figsize=(12,8))
plt.title('서울시 구별 코로나 확진자수 총계')
Text(0.5, 1.0, '서울시 구별 코로나 확진자수 총계')
import folium
import json
geo_path = './data/skorea_municipalities_geo_simple.json'
geo_json = json.load(open(geo_path, encoding='utf-8'))
# 지도 그리기 위해 앞에서 처리한 서울시 상권 위도, 경도 데이터 로딩
df_shop_seoul = pd.read_csv('./data/df_shop_seoul.csv')
df_shop_seoul.head()
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 상권업종소분류명 | 시도명 | 시군구명 | 행정동명 | 법정동명 | 지번주소 | 도로명주소 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 비지트 | NaN | 음식 | 한식 | 한식/백반/한정식 | 서울특별시 | 서초구 | 방배4동 | 방배동 | 서울특별시 서초구 방배동 854-18 | 서울특별시 서초구 동광로18길 82 | 126.991394 | 37.488375 |
1 | 쓰리에프 | NaN | 음식 | 한식 | 한식/백반/한정식 | 서울특별시 | 동작구 | 사당2동 | 사당동 | 서울특별시 동작구 사당동 139-72 | 서울특별시 동작구 동작대로27가길 12 | 126.980952 | 37.487105 |
2 | 채움 | NaN | 음식 | 한식 | 한식/백반/한정식 | 서울특별시 | 종로구 | 종로1.2.3.4가동 | 수송동 | 서울특별시 종로구 수송동 58 | 서울특별시 종로구 삼봉로 81 | 126.981794 | 37.572387 |
3 | 호구의주방 | NaN | 소매 | 가정/주방/인테리어 | 주방가구판매 | 서울특별시 | 영등포구 | 양평2동 | 양평동4가 | 서울특별시 영등포구 양평동4가 160-2 | 서울특별시 영등포구 선유로 269 | 126.897892 | 37.536700 |
4 | 다향 | NaN | 음식 | 한식 | 한식/백반/한정식 | 서울특별시 | 서초구 | 서초3동 | 서초동 | 서울특별시 서초구 서초동 1485-3 | 서울특별시 서초구 효령로 230 | 127.009382 | 37.483436 |
df_corona_seoul
확진자수 | |
---|---|
시군구명 | |
강남구 | 7296 |
강동구 | 4183 |
강북구 | 2923 |
강서구 | 4758 |
관악구 | 5703 |
광진구 | 3730 |
구로구 | 4774 |
금천구 | 2328 |
노원구 | 4198 |
도봉구 | 2833 |
동대문구 | 3967 |
동작구 | 4387 |
마포구 | 4012 |
서대문구 | 2911 |
서초구 | 4463 |
성동구 | 3026 |
성북구 | 4087 |
송파구 | 6815 |
양천구 | 3537 |
영등포구 | 4817 |
용산구 | 2906 |
은평구 | 4616 |
종로구 | 1842 |
중구 | 1899 |
중랑구 | 4027 |
# https://python-visualization.github.io/folium/quickstart.html
# https://matplotlib.org/stable/gallery/color/colormap_reference.html
map = folium.Map(location=[df_shop_seoul['위도'].mean(), df_shop_seoul['경도'].mean()],
zoom_start=11)
map.choropleth(geo_data = geo_json,
data = df_corona_seoul['확진자수'],
columns = [df_shop_seoul.index, df_corona_seoul['확진자수']],
fill_color = 'BuPu',
key_on = 'feature.properties.name',
fill_opacity=0.7,
line_opacity=0.2,
highlight=True)
map
# 앞에서 처리한 서울시 구별 음식점 수 csv 데이터 로딩
df_food_seoul = pd.read_csv('./data/df_food_seoul.csv')
df_food_seoul
시군구명 | 음식점수 | |
---|---|---|
0 | 강남구 | 12723 |
1 | 마포구 | 7684 |
2 | 송파구 | 7348 |
3 | 서초구 | 6610 |
4 | 강서구 | 6393 |
5 | 영등포구 | 6389 |
6 | 관악구 | 5387 |
7 | 강동구 | 5181 |
8 | 종로구 | 5158 |
9 | 중구 | 4869 |
10 | 구로구 | 4615 |
11 | 은평구 | 4596 |
12 | 용산구 | 4583 |
13 | 광진구 | 4569 |
14 | 성북구 | 4294 |
15 | 동대문구 | 4137 |
16 | 서대문구 | 4072 |
17 | 노원구 | 4047 |
18 | 성동구 | 3917 |
19 | 중랑구 | 3656 |
20 | 양천구 | 3465 |
21 | 동작구 | 3336 |
22 | 강북구 | 3289 |
23 | 금천구 | 3195 |
24 | 도봉구 | 2690 |
# 앞에서 처리한 서울시 구별 쓰레기 배출량 csv 데이터 로딩
df_garbage_seoul = pd.read_csv('./data/df_garbage_seoul.csv')
df_garbage_seoul
시군구명 | 배출량 | |
---|---|---|
0 | 송파구 | 38265512065 |
1 | 도봉구 | 34790954457 |
2 | 노원구 | 32942231384 |
3 | 마포구 | 20825545358 |
4 | 영등포구 | 18647711639 |
5 | 강동구 | 14253903549 |
6 | 양천구 | 12177225579 |
7 | 중랑구 | 11582342110 |
8 | 동작구 | 11450788663 |
9 | 서대문구 | 11004141699 |
10 | 성동구 | 9915469267 |
11 | 서초구 | 9714324358 |
12 | 동대문구 | 8487977398 |
13 | 강서구 | 7844540723 |
14 | 금천구 | 7115182020 |
15 | 성북구 | 5924439193 |
16 | 광진구 | 5490445600 |
17 | 관악구 | 4566695953 |
18 | 중구 | 4395584448 |
19 | 은평구 | 4248779407 |
20 | 구로구 | 3732283305 |
21 | 종로구 | 2390357650 |
22 | 강남구 | 1418405631 |
23 | 강북구 | 1385646550 |
24 | 용산구 | 220185394 |
df_food_garbage = pd.merge(df_food_seoul, df_garbage_seoul)
df_food_garbage
시군구명 | 음식점수 | 배출량 | |
---|---|---|---|
0 | 강남구 | 12723 | 1418405631 |
1 | 마포구 | 7684 | 20825545358 |
2 | 송파구 | 7348 | 38265512065 |
3 | 서초구 | 6610 | 9714324358 |
4 | 강서구 | 6393 | 7844540723 |
5 | 영등포구 | 6389 | 18647711639 |
6 | 관악구 | 5387 | 4566695953 |
7 | 강동구 | 5181 | 14253903549 |
8 | 종로구 | 5158 | 2390357650 |
9 | 중구 | 4869 | 4395584448 |
10 | 구로구 | 4615 | 3732283305 |
11 | 은평구 | 4596 | 4248779407 |
12 | 용산구 | 4583 | 220185394 |
13 | 광진구 | 4569 | 5490445600 |
14 | 성북구 | 4294 | 5924439193 |
15 | 동대문구 | 4137 | 8487977398 |
16 | 서대문구 | 4072 | 11004141699 |
17 | 노원구 | 4047 | 32942231384 |
18 | 성동구 | 3917 | 9915469267 |
19 | 중랑구 | 3656 | 11582342110 |
20 | 양천구 | 3465 | 12177225579 |
21 | 동작구 | 3336 | 11450788663 |
22 | 강북구 | 3289 | 1385646550 |
23 | 금천구 | 3195 | 7115182020 |
24 | 도봉구 | 2690 | 34790954457 |
df_food_garbage_corona = pd.merge(df_food_garbage, df_corona)
df_food_garbage_corona
시군구명 | 음식점수 | 배출량 | 확진자수 | |
---|---|---|---|---|
0 | 강남구 | 12723 | 1418405631 | 7296 |
1 | 마포구 | 7684 | 20825545358 | 4012 |
2 | 송파구 | 7348 | 38265512065 | 6815 |
3 | 서초구 | 6610 | 9714324358 | 4463 |
4 | 강서구 | 6393 | 7844540723 | 4758 |
5 | 영등포구 | 6389 | 18647711639 | 4817 |
6 | 관악구 | 5387 | 4566695953 | 5703 |
7 | 강동구 | 5181 | 14253903549 | 4183 |
8 | 종로구 | 5158 | 2390357650 | 1842 |
9 | 중구 | 4869 | 4395584448 | 1899 |
10 | 구로구 | 4615 | 3732283305 | 4774 |
11 | 은평구 | 4596 | 4248779407 | 4616 |
12 | 용산구 | 4583 | 220185394 | 2906 |
13 | 광진구 | 4569 | 5490445600 | 3730 |
14 | 성북구 | 4294 | 5924439193 | 4087 |
15 | 동대문구 | 4137 | 8487977398 | 3967 |
16 | 서대문구 | 4072 | 11004141699 | 2911 |
17 | 노원구 | 4047 | 32942231384 | 4198 |
18 | 성동구 | 3917 | 9915469267 | 3026 |
19 | 중랑구 | 3656 | 11582342110 | 4027 |
20 | 양천구 | 3465 | 12177225579 | 3537 |
21 | 동작구 | 3336 | 11450788663 | 4387 |
22 | 강북구 | 3289 | 1385646550 | 2923 |
23 | 금천구 | 3195 | 7115182020 | 2328 |
24 | 도봉구 | 2690 | 34790954457 | 2833 |
df_food_garbage_corona.describe() # 확진자수가 숫자형 아님
음식점수 | 배출량 | |
---|---|---|
count | 25.000000 | 2.500000e+01 |
mean | 5048.120000 | 1.131163e+10 |
std | 2064.582349 | 1.041689e+10 |
min | 2690.000000 | 2.201854e+08 |
25% | 3917.000000 | 4.395584e+09 |
50% | 4583.000000 | 8.487977e+09 |
75% | 5387.000000 | 1.217723e+10 |
max | 12723.000000 | 3.826551e+10 |
df_food_garbage_corona['확진자수'] = pd.to_numeric(df_food_garbage_corona['확진자수'], errors='coerce')
df_food_garbage_corona.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 25 entries, 0 to 24 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 시군구명 25 non-null object 1 음식점수 25 non-null int64 2 배출량 25 non-null int64 3 확진자수 25 non-null int64 dtypes: int64(3), object(1) memory usage: 1000.0+ bytes
plt.figure(figsize = (12,8))
sns.scatterplot(x='배출량', y='확진자수', hue='시군구명', data=df_food_garbage_corona)
plt.title('구별 음식물 쓰레기 배출량과 코로나 발생의 관계 (학습용)')
Text(0.5, 1.0, '구별 음식물 쓰레기 배출량과 코로나 발생의 관계 (학습용)')
plt.figure(figsize = (12,8))
sns.regplot(x='배출량', y='확진자수', data=df_food_garbage_corona)
plt.title('구별 음식물 쓰레기 배출량과 코로나 발생의 관계 (학습용)')
Text(0.5, 1.0, '구별 음식물 쓰레기 배출량과 코로나 발생의 관계 (학습용)')
plt.figure(figsize = (12,8))
sns.regplot(x='음식점수', y='확진자수', color='orange', data=df_food_garbage_corona)
plt.title('구별 음식점수와 코로나 발생의 관계 (학습용)')
Text(0.5, 1.0, '구별 음식점수와 코로나 발생의 관계 (학습용)')
sns.pairplot(df_food_garbage_corona)
<seaborn.axisgrid.PairGrid at 0x1dcdec10250>
df_food_garbage_corona.corr()
음식점수 | 배출량 | 확진자수 | |
---|---|---|---|
음식점수 | 1.000000 | -0.036131 | 0.685306 |
배출량 | -0.036131 | 1.000000 | 0.204424 |
확진자수 | 0.685306 | 0.204424 | 1.000000 |
# https://m.blog.naver.com/kiddwannabe/221763497317
plt.figure(figsize = (8, 6))
sns.heatmap(df_food_garbage_corona.corr(),
annot = True,
cmap = 'RdYlBu_r',
linewidths=.5,
vmin = -1, vmax = 1,
)
<AxesSubplot:>
mask = np.zeros_like(df_food_garbage_corona.corr(), dtype=np.bool)
mask[np.triu_indices_from(mask)] = True
plt.figure(figsize=(10,6))
sns.heatmap(df_food_garbage_corona.corr(),
annot = True,
mask = mask,
cmap = 'RdYlBu_r',
linewidths=.5,
cbar_kws={"shrink": .8},
vmin = -1, vmax = 1,
)
<AxesSubplot:>
# df_food_garbage_corona.to_csv('./data/df_food_garbage_corona.csv', index=False)
df_food_garbage_corona.to_csv('./data/df_food_garbage_corona2.csv', index=False)
df = pd.read_csv('./data/df_food_garbage_corona.csv')
df
시군구명 | 음식점수 | 배출량 | 확진자수 | |
---|---|---|---|---|
0 | 강남구 | 12723 | 1418405631 | 7146 |
1 | 마포구 | 7684 | 20825545358 | 3889 |
2 | 송파구 | 7348 | 38265512065 | 6606 |
3 | 서초구 | 6610 | 9714324358 | 4380 |
4 | 강서구 | 6393 | 7844540723 | 4627 |
5 | 영등포구 | 6389 | 18647711639 | 4654 |
6 | 관악구 | 5387 | 4566695953 | 5580 |
7 | 강동구 | 5181 | 14253903549 | 4000 |
8 | 종로구 | 5158 | 2390357650 | 1745 |
9 | 중구 | 4869 | 4395584448 | 1824 |
10 | 구로구 | 4615 | 3732283305 | 4485 |
11 | 은평구 | 4596 | 4248779407 | 4449 |
12 | 용산구 | 4583 | 220185394 | 2814 |
13 | 광진구 | 4569 | 5490445600 | 3633 |
14 | 성북구 | 4294 | 5924439193 | 3944 |
15 | 동대문구 | 4137 | 8487977398 | 3761 |
16 | 서대문구 | 4072 | 11004141699 | 2814 |
17 | 노원구 | 4047 | 32942231384 | 4041 |
18 | 성동구 | 3917 | 9915469267 | 2961 |
19 | 중랑구 | 3656 | 11582342110 | 3886 |
20 | 양천구 | 3465 | 12177225579 | 3421 |
21 | 동작구 | 3336 | 11450788663 | 4255 |
22 | 강북구 | 3289 | 1385646550 | 2776 |
23 | 금천구 | 3195 | 7115182020 | 2214 |
24 | 도봉구 | 2690 | 34790954457 | 2735 |
df2 = pd.read_csv('./data/df_food_garbage_corona2.csv')
df2
시군구명 | 음식점수 | 배출량 | 확진자수 | |
---|---|---|---|---|
0 | 강남구 | 12723 | 1418405631 | 7296 |
1 | 마포구 | 7684 | 20825545358 | 4012 |
2 | 송파구 | 7348 | 38265512065 | 6815 |
3 | 서초구 | 6610 | 9714324358 | 4463 |
4 | 강서구 | 6393 | 7844540723 | 4758 |
5 | 영등포구 | 6389 | 18647711639 | 4817 |
6 | 관악구 | 5387 | 4566695953 | 5703 |
7 | 강동구 | 5181 | 14253903549 | 4183 |
8 | 종로구 | 5158 | 2390357650 | 1842 |
9 | 중구 | 4869 | 4395584448 | 1899 |
10 | 구로구 | 4615 | 3732283305 | 4774 |
11 | 은평구 | 4596 | 4248779407 | 4616 |
12 | 용산구 | 4583 | 220185394 | 2906 |
13 | 광진구 | 4569 | 5490445600 | 3730 |
14 | 성북구 | 4294 | 5924439193 | 4087 |
15 | 동대문구 | 4137 | 8487977398 | 3967 |
16 | 서대문구 | 4072 | 11004141699 | 2911 |
17 | 노원구 | 4047 | 32942231384 | 4198 |
18 | 성동구 | 3917 | 9915469267 | 3026 |
19 | 중랑구 | 3656 | 11582342110 | 4027 |
20 | 양천구 | 3465 | 12177225579 | 3537 |
21 | 동작구 | 3336 | 11450788663 | 4387 |
22 | 강북구 | 3289 | 1385646550 | 2923 |
23 | 금천구 | 3195 | 7115182020 | 2328 |
24 | 도봉구 | 2690 | 34790954457 | 2833 |